DopplerController
The DopplerController handles retrieval of radar images for weather data visualization.
Overview
This controller provides access to radar images stored in Azure Blob Storage. It processes time-based requests and returns radar imagery for specific geographic areas (quad keys) and time periods.
Data Sources
- Azure Blob Storage:
radar-imagescontainer - Configuration:
appsettings.jsonfor connection string - Error Storage: Azure Table Storage for error logging
Endpoints
GET /api/doppler/images
Retrieves radar images based on simulation time, duration, and geographic location.
Query Parameters:
simulationStartDateTime(string): Start time of simulationminutes(string): Duration in minutes from start timequadKey(string): Geographic quad key for tile location
Response:
- 200 OK: Returns image stream (PNG format)
- 404 Not Found: Image not available
- 500 Internal Server Error: Storage or processing error
Data Flow:
Blob Storage Structure:
radar-images/
├── {YYYY-MM-ddTHH:mm:sszzz}/
│ ├── {quadKey1}.png
│ ├── {quadKey2}.png
│ └── ...
Time Processing:
- Input time is rounded to nearest 15-minute interval
- Format:
yyyy-MM-ddTHH:mm:sszzz - UTC timezone handling
Azure Storage Details
Blob Container
- Container Name:
radar-images - Access Level: Read-only
- Content Type:
image/png
Error Handling
- Errors are logged to Azure Table Storage
- Application name:
SWMM5WEB - Includes error message and stack trace
Configuration
Required Settings:
{
"Values": {
"CloudStorageConnectionString": "DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net"
}
}
Dependencies
Azure.Storage.BlobsAzure.Data.TablesGqcStorage1(Storage utilities)ConstantsSwmm(Constants)
Error Scenarios
- Missing Image: Returns null when blob doesn't exist
- Storage Connection: Handles Azure storage exceptions
- Invalid Parameters: Validates time and quad key parameters
- Network Issues: Graceful handling of download failures
Performance Considerations
- Uses memory streams for efficient image transfer
- Direct blob download without intermediate processing
- Minimal memory footprint for large image files